package com.mccken.practice.data_structure.data_05;

import java.util.LinkedList;

/**
 * 单调队列
 *
 * @program: mccken-collect
 * @description:
 * @author: mccken
 * @create: 2023-12-31 21:33
 **/
public class MonotonicQueue implements IMonotonicQueue {
	
	// 底层结构是双链表
	LinkedList<Integer> linkedList = new LinkedList<>();

	/**
	 * 在队列尾添加元素
	 */
	public void push(int n) {
		while (!linkedList.isEmpty() && n > linkedList.getLast()) {
			linkedList.pollLast();
		}
		linkedList.addLast(n);
	}

	/**
	 * 在队列头删除元素 (如果队列头是n)
	 */
	public void pop(int n) {
		if (linkedList.getFirst() == n) {
			linkedList.pollFirst();	
		}
	}

	/**
	 * 返回当前队列中最大值
	 */
	public int max() {
		return linkedList.getFirst();
	}

}
